// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package base

import (
	"strings"
)

// Tracer
// is a type name of trace reporter.
type Tracer string

// Tracer reporter enum.

const (
	TracerJaeger Tracer = "jaeger"
	TracerZipkin Tracer = "zipkin"

	defaultTracer Tracer = ""
)

// Disabled
// return true if the configured tracer is empty or not matched.
func (o Tracer) Disabled() bool {
	return o == defaultTracer
}

// Generator
// generates a valid tracer.
func (o Tracer) Generator() Tracer {
	t := Tracer(strings.ToLower(strings.TrimSpace(o.String())))
	switch t {
	case TracerJaeger, TracerZipkin:
		return t
	default:
		return defaultTracer
	}
}

// Strings
// returns the tracer name.
func (o Tracer) String() string {
	return string(o)
}
